Conversation
Update the webviewer architecture docs and Mermaid rendering so the diagrams communicate the FileMaker integration paths clearly.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughUpdates documentation visuals and guidance: post-processes Mermaid SVG edge-labels and applies theme CSS in the Mermaid renderer; adds a new SVG-based AgentWorkflowLoop component; and edits several MDX pages (webviewer architecture, AI getting-started, technical-requirements, agent-workflow, build-a-webviewer-app) plus a small global CSS tweak. ChangesDocs visuals & workflow
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/docs/content/docs/webviewer/architecture.mdx`:
- Around line 44-45: Replace the inconsistent wording so the document uses
"type-safe" and the same fmFetch() notation everywhere: change the phrase
"ProofKit type safe client" to "ProofKit type-safe client" and ensure
occurrences of "fmFetch()" are styled/worded consistently (matching the
diagram/callout usage) — update the lines containing the "ProofKit type safe
client" text and the fmFetch() mention to use "type-safe" and the exact
"fmFetch()" token.
In `@apps/docs/src/components/Mermaid.tsx`:
- Around line 18-23: The SVG geometry mutation risks writing NaN values because
x, width, and height are derived via Number(rect.groups.*) without checks and
the height threshold uses a magic literal 40; update the code around the parsing
and guard (the block that reads const x = Number(rect.groups.x); const width =
Number(rect.groups.width); const height = Number(rect.groups.height); and the if
that returns group) to: 1) parse x/width/height and ensure each is a finite
number (use Number.isFinite) before assigning them to SVG attributes or bail
out/return the original group if any are not finite, and 2) replace the literal
40 with a new descriptive constant (e.g., MIN_SINGLE_LINE_EDGE_LABEL_HEIGHT) and
use that constant in the height comparison alongside the existing
MIN_MULTILINE_EDGE_LABEL_WIDTH check.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: e183075f-aefb-440c-a2e5-8b469edff17b
📒 Files selected for processing (2)
apps/docs/content/docs/webviewer/architecture.mdxapps/docs/src/components/Mermaid.tsx
| - **ProofKit type safe client**: Generated client code that calls FileMaker's Data API through the Execute Data API script step. | ||
| - **fmFetch()**: A lightweight script bridge for calling FileMaker scripts from the Web Viewer app. |
There was a problem hiding this comment.
Use consistent terminology: type-safe and fmFetch() in prose.
Small docs wording cleanup for consistency with the diagram/callout terminology.
Suggested patch
- - **ProofKit type safe client**: Generated client code that calls FileMaker's Data API through the Execute Data API script step.
+ - **ProofKit type-safe client**: Generated client code that calls FileMaker's Data API through the Execute Data API script step.
@@
-- At runtime, the deployed web app talks to FileMaker through fmFetch scripts and the type-safe Data API path.
+- At runtime, the deployed web app talks to FileMaker through `fmFetch()` scripts and the type-safe Data API path.Also applies to: 51-51
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/docs/content/docs/webviewer/architecture.mdx` around lines 44 - 45,
Replace the inconsistent wording so the document uses "type-safe" and the same
fmFetch() notation everywhere: change the phrase "ProofKit type safe client" to
"ProofKit type-safe client" and ensure occurrences of "fmFetch()" are
styled/worded consistently (matching the diagram/callout usage) — update the
lines containing the "ProofKit type safe client" text and the fmFetch() mention
to use "type-safe" and the exact "fmFetch()" token.
| const x = Number(rect.groups.x); | ||
| const width = Number(rect.groups.width); | ||
| const height = Number(rect.groups.height); | ||
|
|
||
| if (height < 40 || width >= MIN_MULTILINE_EDGE_LABEL_WIDTH) { | ||
| return group; |
There was a problem hiding this comment.
Add finite-number guards before mutating SVG geometry, and name the height threshold constant.
If x, width, or height parses to NaN, this writes invalid values (e.g., x="NaN") into the SVG. Also, Line 22 uses a magic number (40).
Suggested patch
const MIN_MULTILINE_EDGE_LABEL_WIDTH = 112;
+const MIN_MULTILINE_EDGE_LABEL_HEIGHT = 40;
@@
const x = Number(rect.groups.x);
const width = Number(rect.groups.width);
const height = Number(rect.groups.height);
- if (height < 40 || width >= MIN_MULTILINE_EDGE_LABEL_WIDTH) {
+ if (
+ !Number.isFinite(x) ||
+ !Number.isFinite(width) ||
+ !Number.isFinite(height) ||
+ height < MIN_MULTILINE_EDGE_LABEL_HEIGHT ||
+ width >= MIN_MULTILINE_EDGE_LABEL_WIDTH
+ ) {
return group;
}As per coding guidelines, "Use meaningful variable names instead of magic numbers - extract constants with descriptive names".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/docs/src/components/Mermaid.tsx` around lines 18 - 23, The SVG geometry
mutation risks writing NaN values because x, width, and height are derived via
Number(rect.groups.*) without checks and the height threshold uses a magic
literal 40; update the code around the parsing and guard (the block that reads
const x = Number(rect.groups.x); const width = Number(rect.groups.width); const
height = Number(rect.groups.height); and the if that returns group) to: 1) parse
x/width/height and ensure each is a finite number (use Number.isFinite) before
assigning them to SVG attributes or bail out/return the original group if any
are not finite, and 2) replace the literal 40 with a new descriptive constant
(e.g., MIN_SINGLE_LINE_EDGE_LABEL_HEIGHT) and use that constant in the height
comparison alongside the existing MIN_MULTILINE_EDGE_LABEL_WIDTH check.
There was a problem hiding this comment.
♻️ Duplicate comments (1)
apps/docs/src/components/Mermaid.tsx (1)
25-30:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winStill missing finite-number guards before SVG geometry mutation.
This previously flagged issue is still present: if parsing yields non-finite values, Lines 37-39 can emit invalid SVG attributes. Also, the threshold at Line 29 is still a magic number (
40).Suggested minimal patch
const MIN_MULTILINE_EDGE_LABEL_WIDTH = 112; +const MIN_MULTILINE_EDGE_LABEL_HEIGHT = 40; @@ const x = Number(rect.groups.x); const width = Number(rect.groups.width); const height = Number(rect.groups.height); - if (height < 40 || width >= MIN_MULTILINE_EDGE_LABEL_WIDTH) { + if ( + !Number.isFinite(x) || + !Number.isFinite(width) || + !Number.isFinite(height) || + height < MIN_MULTILINE_EDGE_LABEL_HEIGHT || + width >= MIN_MULTILINE_EDGE_LABEL_WIDTH + ) { return group; }As per coding guidelines, "Use meaningful variable names instead of magic numbers - extract constants with descriptive names".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/docs/src/components/Mermaid.tsx` around lines 25 - 30, The code in Mermaid.tsx currently casts rect.groups.x/width/height to Number and then uses them to set SVG attributes; add finite-number guards (Number.isFinite) for x, width, and height before any DOM/SVG mutation and early-return the original group if any are not finite to avoid emitting invalid attributes; also replace the magic literal 40 with a named constant (e.g., MIN_SINGLE_LINE_EDGE_LABEL_HEIGHT) and use that constant in the conditional together with the existing MIN_MULTILINE_EDGE_LABEL_WIDTH to keep thresholds descriptive and maintainable.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Duplicate comments:
In `@apps/docs/src/components/Mermaid.tsx`:
- Around line 25-30: The code in Mermaid.tsx currently casts
rect.groups.x/width/height to Number and then uses them to set SVG attributes;
add finite-number guards (Number.isFinite) for x, width, and height before any
DOM/SVG mutation and early-return the original group if any are not finite to
avoid emitting invalid attributes; also replace the magic literal 40 with a
named constant (e.g., MIN_SINGLE_LINE_EDGE_LABEL_HEIGHT) and use that constant
in the conditional together with the existing MIN_MULTILINE_EDGE_LABEL_WIDTH to
keep thresholds descriptive and maintainable.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 89b17b04-f905-48bd-8d44-df185c1d9cb5
📒 Files selected for processing (1)
apps/docs/src/components/Mermaid.tsx
@proofkit/better-auth
@proofkit/cli
create-proofkit
@proofkit/fmdapi
@proofkit/fmodata
@proofkit/typegen
@proofkit/webviewer
commit: |
Clarify the requirements for Node.js LTS, specifying supported versions (Node.js 22 and 24) and providing detailed installation guidance for various platforms. Update the 'Technical Requirements' and 'Getting Started' sections to improve user onboarding.
There was a problem hiding this comment.
🧹 Nitpick comments (1)
apps/docs/content/docs/ai/technical-requirements.mdx (1)
59-61: ⚡ Quick winPin
nvmcommands to supported majors to avoid future drift.
nvm install --ltsinstalls the latest LTS version (using thelts/*alias), which will eventually move to newer LTS majors as they are released. This can conflict with this page's explicit support matrix (Node.js 22/24).Proposed doc tweak
- nvm install --lts - nvm use --lts + nvm install 24 + nvm use 24 + # If your team standardizes on Node 22 instead: + # nvm install 22 && nvm use 22🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/docs/content/docs/ai/technical-requirements.mdx` around lines 59 - 61, The docs currently use the floating aliases "nvm install --lts" and "nvm use --lts"; update those commands to pin to the supported major(s) to avoid future drift (e.g., replace "nvm install --lts" and "nvm use --lts" with explicit major pins like "nvm install 24" and "nvm use 24" or whichever majors your support matrix requires), ensuring the commands match the Node.js 22/24 support matrix referenced elsewhere in the doc.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@apps/docs/content/docs/ai/technical-requirements.mdx`:
- Around line 59-61: The docs currently use the floating aliases "nvm install
--lts" and "nvm use --lts"; update those commands to pin to the supported
major(s) to avoid future drift (e.g., replace "nvm install --lts" and "nvm use
--lts" with explicit major pins like "nvm install 24" and "nvm use 24" or
whichever majors your support matrix requires), ensuring the commands match the
Node.js 22/24 support matrix referenced elsewhere in the doc.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 7cbb4a86-589a-440c-81eb-9fd275e06938
📒 Files selected for processing (2)
apps/docs/content/docs/ai/getting-started.mdxapps/docs/content/docs/ai/technical-requirements.mdx
Update the agent workflow documentation to utilize the new AgentWorkflowLoop component, enhancing the visual representation of the workflow. Remove the previous Mermaid diagram and related callout for a more integrated and interactive experience.
There was a problem hiding this comment.
🧹 Nitpick comments (2)
apps/docs/src/components/AgentWorkflowLoop.tsx (2)
98-106: ⚡ Quick winReuse
Nodeto remove duplicated SVG node markup.This block duplicates rectangle/text rendering that
Nodealready supports with multiline labels, which increases drift risk for styling/alignment.Proposed change
- <g> - <rect className={nodeClass} height="52" rx="4" width="168" x="552" y="68" /> - <text className={textClass} textAnchor="middle" x="636" y="90"> - <tspan x="636">Run typecheck</tspan> - <tspan dy="16" x="636"> - and lint - </tspan> - </text> - </g> + <Node height={52} label={["Run typecheck", "and lint"]} width={168} x={552} y={68} />🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/docs/src/components/AgentWorkflowLoop.tsx` around lines 98 - 106, This block duplicates SVG markup that the existing Node component already handles; replace the <g>...</g> rectangle/text snippet with the Node component usage to ensure consistent styling and multiline labels. Locate the duplicated markup in AgentWorkflowLoop.tsx (the <g> with rect using nodeClass and text using textClass) and render <Node> (or the project's Node component) passing the same props (class names, position x/y, width/height or equivalent) and the multiline label "Run typecheck\nand lint" (or children/tspans as Node expects). Ensure you remove the duplicated <g> block and verify Node receives any needed props for alignment and accessibility so styling/alignment remain identical.
29-31: ⚡ Quick winMake mapped
<tspan>keys collision-safe.Line 30 uses
key={line}; repeated label text can produce duplicate keys and reconciliation warnings. Use a deterministic unique key per item.Proposed change
- {lines.map((line, index) => ( - <tspan dy={index === 0 ? 0 : lineHeight} key={line} x={x + width / 2}> + {lines.map((line, index) => ( + <tspan dy={index === 0 ? 0 : lineHeight} key={`${line}-${index}`} x={x + width / 2}> {line} </tspan> ))}As per coding guidelines, "Use the
keyprop for elements in iterables (prefer unique IDs over array indices)".🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/docs/src/components/AgentWorkflowLoop.tsx` around lines 29 - 31, In AgentWorkflowLoop's JSX where lines.map((line, index) => (<tspan ... key={line} ...>), replace the non-unique key={line} with a deterministic unique key (e.g., combine the index and the line text) so identical label text won't produce duplicate React keys; update the key expression on the <tspan> to something like a concatenation of index and line (e.g., `line-${index}-${line}`) to ensure collision-safe reconciliation while keeping the mapping logic in lines.map intact.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@apps/docs/src/components/AgentWorkflowLoop.tsx`:
- Around line 98-106: This block duplicates SVG markup that the existing Node
component already handles; replace the <g>...</g> rectangle/text snippet with
the Node component usage to ensure consistent styling and multiline labels.
Locate the duplicated markup in AgentWorkflowLoop.tsx (the <g> with rect using
nodeClass and text using textClass) and render <Node> (or the project's Node
component) passing the same props (class names, position x/y, width/height or
equivalent) and the multiline label "Run typecheck\nand lint" (or
children/tspans as Node expects). Ensure you remove the duplicated <g> block and
verify Node receives any needed props for alignment and accessibility so
styling/alignment remain identical.
- Around line 29-31: In AgentWorkflowLoop's JSX where lines.map((line, index) =>
(<tspan ... key={line} ...>), replace the non-unique key={line} with a
deterministic unique key (e.g., combine the index and the line text) so
identical label text won't produce duplicate React keys; update the key
expression on the <tspan> to something like a concatenation of index and line
(e.g., `line-${index}-${line}`) to ensure collision-safe reconciliation while
keeping the mapping logic in lines.map intact.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: dac3edfc-92f6-4d0c-8e5d-f36017b77dac
📒 Files selected for processing (2)
apps/docs/content/docs/ai/agent-workflow.mdxapps/docs/src/components/AgentWorkflowLoop.tsx
Enhance the 'Build a Web Viewer App' guide by adding specific prompts for scaffolding and inspecting projects, as well as including new screenshots for local previews and theme presets. Update Node.js version requirements in the 'Getting Started' and 'Technical Requirements' sections to include Node.js 26. Introduce CSS styles for images in documentation.
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/docs/content/docs/ai/build-a-webviewer-app.mdx`:
- Line 30: In the docs file build-a-webviewer-app.mdx update the user-facing
sentence that currently reads "it's preview browser" to use the possessive "its"
(i.e., change "it's preview browser" → "its preview browser"); locate the exact
string in the content and replace the contraction with the correct possessive
form so the instruction reads "ask it to use its preview browser."
In `@apps/docs/content/docs/ai/technical-requirements.mdx`:
- Around line 21-22: Update the Node.js LTS list in the bullet that currently
reads "Node.js 22, Node.js 24, or Node.js 26" to only list the actual LTS
releases (e.g., "Node.js 22 or Node.js 24") and remove Node.js 26; also update
the other occurrence around line 97 that references Node.js 26 to state that
Node.js 26 is currently "Current" and will enter LTS in October 2026 (or simply
omit it from the LTS recommendation), so the doc consistently recommends only
explicitly LTS-marked releases.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 26353e38-342b-4dd7-85cc-6b729242ba02
⛔ Files ignored due to path filters (2)
apps/docs/public/screenshots/ai/local-preview-filemaker-webviewer.pngis excluded by!**/*.pngapps/docs/public/screenshots/ai/theme-preset-filemaker-webviewer.pngis excluded by!**/*.png
📒 Files selected for processing (4)
apps/docs/content/docs/ai/build-a-webviewer-app.mdxapps/docs/content/docs/ai/getting-started.mdxapps/docs/content/docs/ai/technical-requirements.mdxapps/docs/src/app/global.css
| **Run the local preview.** | ||
|
|
||
| The agent should start the dev server and open the app in a browser so it can inspect the result. | ||
| The agent should start the dev server and open the app in a browser so it can inspect the result. Agents also have embedded browsers, so they can inspect the result without leaving the agentic loop. If the agent doesn't open a browser, ask it to use it's preview browser. |
There was a problem hiding this comment.
Fix typo in user-facing instruction.
Line 30 uses “it's preview browser”; this should be “its preview browser”.
✏️ Proposed fix
- The agent should start the dev server and open the app in a browser so it can inspect the result. Agents also have embedded browsers, so they can inspect the result without leaving the agentic loop. If the agent doesn't open a browser, ask it to use it's preview browser.
+ The agent should start the dev server and open the app in a browser so it can inspect the result. Agents also have embedded browsers, so they can inspect the result without leaving the agentic loop. If the agent doesn't open a browser, ask it to use its preview browser.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| The agent should start the dev server and open the app in a browser so it can inspect the result. Agents also have embedded browsers, so they can inspect the result without leaving the agentic loop. If the agent doesn't open a browser, ask it to use it's preview browser. | |
| The agent should start the dev server and open the app in a browser so it can inspect the result. Agents also have embedded browsers, so they can inspect the result without leaving the agentic loop. If the agent doesn't open a browser, ask it to use its preview browser. |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/docs/content/docs/ai/build-a-webviewer-app.mdx` at line 30, In the docs
file build-a-webviewer-app.mdx update the user-facing sentence that currently
reads "it's preview browser" to use the possessive "its" (i.e., change "it's
preview browser" → "its preview browser"); locate the exact string in the
content and replace the contraction with the correct possessive form so the
instruction reads "ask it to use its preview browser."
| - **Node.js LTS** installed locally. Choose a release that is explicitly marked LTS. Today that means **Node.js 22**, **Node.js 24**, or **Node.js 26**. | ||
| - **An MCP-compatible coding agent**, such as Cursor, Claude Code, Codex, OpenCode, or another agent that supports MCP servers. |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
What major Node.js versions are currently marked "LTS" on the official Node.js releases page (https://nodejs.org/en/about/previous-releases), and what is the current status of Node.js 26?
💡 Result:
The major Node.js versions currently marked as "LTS" on the official Node.js releases page (https://nodejs.org/en/about/previous-releases) are v24 (Krypton) and v22 (Jod).[1][2][3] Node.js 26 is currently in "Current" status, released on 2026-05-05, and is scheduled to enter LTS in October 2026.[1][4][5][6]
Citations:
- 1: https://nodejs.org/en/about/previous-releases
- 2: https://nodejs.org/about/releases
- 3: https://github.com/nodejs/LTS
- 4: https://github.com/nodejs/node/releases
- 5: https://nodejs.org/en/blog/release/v26.0.0
- 6: https://github.com/nodejs/node/releases/tag/v26.0.0
🏁 Script executed:
# First, find and read the file
cat -n apps/docs/content/docs/ai/technical-requirements.mdx | head -100 | tail -80Repository: proofsh/proofkit
Length of output: 3852
Update Node.js LTS status to reflect current release timeline.
Lines 21 and 97 incorrectly identify Node.js 26 as LTS. As of May 5, 2026, only Node.js 22 and Node.js 24 are marked LTS; Node.js 26 is Current and will enter LTS in October 2026. This contradicts the guidance to choose explicitly LTS-marked releases.
Proposed fixes
-- **Node.js LTS** installed locally. Choose a release that is explicitly marked LTS. Today that means **Node.js 22**, **Node.js 24**, or **Node.js 26**.
+- **Node.js LTS** installed locally. Choose a release that is explicitly marked LTS. As of May 5, 2026, that means **Node.js 22** or **Node.js 24**. (**Node.js 26** is Current and will enter LTS in October 2026.)
@@
-| Development requirements | FileMaker Pro and Node.js 22, 24, or 26 LTS |
+| Development requirements | FileMaker Pro and Node.js 22 or 24 LTS (Node.js 26 becomes LTS in October 2026) |🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/docs/content/docs/ai/technical-requirements.mdx` around lines 21 - 22,
Update the Node.js LTS list in the bullet that currently reads "Node.js 22,
Node.js 24, or Node.js 26" to only list the actual LTS releases (e.g., "Node.js
22 or Node.js 24") and remove Node.js 26; also update the other occurrence
around line 97 that references Node.js 26 to state that Node.js 26 is currently
"Current" and will enter LTS in October 2026 (or simply omit it from the LTS
recommendation), so the doc consistently recommends only explicitly LTS-marked
releases.
Enhance the 'Deploy to FileMaker' guide by adding a new section on asking the agent to deploy the app, detailing the deployment process and emphasizing the importance of running checks. Replace the TODO callout with a screenshot of a deployed ProofKit app in a FileMaker Web Viewer layout for better visual guidance.
Summary
Test plan
Summary by CodeRabbit